CurrentCost et python sur rapsberry

Ce week-end mon « nas » est mort.

Il faut recréer et moderniser la mesure en temps réel de la consommation énergétique de toute la maison.

J’ai (toujours) une raspberry sus la main… c’est parti !

Dans cet article, je vais présenter comment récupérer les données xml issues d’un boîtier currentcost.

Installation Raspberry Pi OS (previously called Raspbian)

tout ce passe ici : https://www.raspberrypi.org/downloads/raspberry-pi-os/

installation python pour prise en charge usb pl2303 du currentcost

sudo apt-get install python-serial

Lecture trame xml usb pl2303

Créer un programme python : currentcost.py

import serial
cc128 = serial.Serial("/dev/ttyUSB0", 57600, timeout=6)
cc128xml = cc128.readlines(6)
print cc128xml
Le lancer avec : $ python currentcost.py
Ce qui nous donne : 

C’est la preuve que l’usb est bien reconnue. Nous avons ici la trame XML envoyée toutes les 6 secondes…

Ajouter python pip

sudo apt-get install python-pip

Mysql / MariaDb

puis le connecteur mysql

python -m pip install mysql-connector-python

Rrdtool

Installation de rrdtool pour la réalisation de petits graphiques

sudo apt-get install librrd-dev libpython-dev
sudo pip install rrdtool

Sources : https://pythonhosted.org/rrdtool/install.html#installation

Puis création des fichiers rrdtool pour stocker les données

$ rrdtool create powertemp.rrd --step 5 \
DS:Power:GAUGE:180:0:U \
DS:Temperature:GAUGE:180:U:U \
RRA:AVERAGE:0.5:1:3200 \
RRA:AVERAGE:0.5:6:3200 \
RRA:AVERAGE:0.5:36:3200 \
RRA:AVERAGE:0.5:144:3200 \
RRA:AVERAGE:0.5:1008:3200 \
RRA:AVERAGE:0.5:4320:3200 \
RRA:AVERAGE:0.5:52560:3200 \
RRA:MIN:0.5:1:3200 \
RRA:MIN:0.5:6:3200 \
RRA:MIN:0.5:36:3200 \
RRA:MIN:0.5:144:3200 \
RRA:MIN:0.5:1008:3200 \
RRA:MIN:0.5:4320:3200 \
RRA:MIN:0.5:52560:3200 \
RRA:MAX:0.5:1:3200 \
RRA:MAX:0.5:6:3200 \
RRA:MAX:0.5:36:3200 \
RRA:MAX:0.5:144:3200 \
RRA:MAX:0.5:1008:3200 \
RRA:MAX:0.5:4320:3200 \
RRA:MAX:0.5:52560:3200

Plus d’infos : http://www.jibble.org/currentcost/

Pour les autres sondes, j’enleverai la ligne qui stocke la t°.

En python la ligne qui permet d’inserer une donnée dans un fichier rrdtool est :

ret = rrdtool.update('currentcost/fichiers_rrd/powertemp.rrd','N:' + str(big_total) + ':' + str(tmper));

A adapter en fonction de vos besoins…

La génération d’un graphique par rrdtool donne déjà de bon résultats :

En bossant un peu la doc de rrdtool :

Reste à refaire toute la mise en page des données…

A suivre…

Ceci pourrait vous intéresser :

Leave a Comment